//
//  ZYUrlSessionManagerTaskDelegate.h
//  ZYWebImage
//
//  Created by wangzhipan on 2025/4/14.
//

#import <Foundation/Foundation.h>

@class ZYUrlSessionManager;
NS_ASSUME_NONNULL_BEGIN
//ssl/tsl验证错误信息，绑定在NSUrlSessionTask上
static char * const kAuthenticationChallengeErrorKey;
@interface ZYUrlSessionManagerTaskDelegate : NSObject <NSURLSessionTaskDelegate, NSURLSessionDataDelegate>
/*
 进行性能分析：
 NSURLSessionTaskTransactionMetrics 类（作为 NSURLSessionTaskMetrics 的一部分）提供了以下关键时间点：
 - fetchStartDate ：开始获取资源的时间
 - domainLookupStartDate ：开始 DNS 查询的时间
 - domainLookupEndDate ：DNS 查询完成的时间
 - connectStartDate ：开始建立连接的时间
 - secureConnectionStartDate ：开始 TLS 握手的时间
 - secureConnectionEndDate ：TLS 握手完成的时间
 - connectEndDate ：连接建立完成的时间
 - requestStartDate ：开始发送请求的时间
 - requestEndDate ：请求发送完成的时间
 - responseStartDate ：开始接收响应的时间
 - responseEndDate ：响应接收完成的时间
 */
@property (nonatomic, strong, nullable, readonly) NSURLSessionTaskMetrics *taskMetrics;

@property (nonatomic, copy, nullable) void(^uploadProgress)(NSUInteger currentSentSize, NSUInteger totalSize);

@property (nonatomic, copy, nullable) void(^completedBlock)(NSURLResponse *response, id _Nullable rspObj, NSError * _Nullable error);


- (instancetype)initWithSessionManager:(ZYUrlSessionManager *)sessionManager;
@end

NS_ASSUME_NONNULL_END
